聚合扫码,用一个 Shortcuts 动作统一常用软件的扫码入口

您所在的位置:网站首页 快捷指令 微信扫码 本地照片 聚合扫码,用一个 Shortcuts 动作统一常用软件的扫码入口

聚合扫码,用一个 Shortcuts 动作统一常用软件的扫码入口

2024-07-12 23:29| 来源: 网络整理| 查看: 265

《赛博朋克2077》在中国发售时,曾揶揄中国玩家来自“最赛博朋克的国度”。此话固然是抖机灵,开发商可能在韩国或日本都说过类似的话,不过,低头看看我们每天在用的软件服务,“高技术,低生活”,或许不是玩笑——比如扫描二维码。

没有任何一种交互方式像扫码一样,能够在如此之短的时间内席卷整个中国市场;然而,一旦各家软件——微信、支付宝、各种快递软件、各种骑车软件、以及许多本地服务机构的客户端——都将扫码作为重要、甚至是唯一的操作入口,事情就变了味,原本(我怀着善意猜测)想方便人,现在却要在一堆软件中挑挑拣拣半天,反倒麻烦。若在排队,还耽误后面的人。

就此问题,有开发者尝试统一扫码入口,即只用一款软件扫码,再根据二维码内容跳转到对应软件1,并继续调用目标软件扫码。这一思路非常聪明,开发者也足够细心,内置支持了微信、支付宝等常用软件——然而,现实中的商家却不配合,各类本地服务——例如小区物业、行政机构、实体店的微信小程序——基本不可能被收录;而软件暂不支持自定义,最终能够覆盖到的服务,着实有限。2

当然,尝试前述软件时,理想情况下一气呵成的扫码流程让我难忘,稍加分析后,我试着用 Shortcuts 自制了一个聚合扫码动作,除了自动跳转这一核心功能外,重在可以自定义目标软件,几乎任何乖僻的服务都可兼容。

Shortcuts 动作GitHub使用简介

示例动作仅提供中国邮政和美团单车等常见微信小程序的二维码,扫描后会打开微信,并直接跳到扫一扫界面,继续扫描刚才的画面。听上去似乎并不高明,但实际非常快3,几乎看不到中间的跳转过程,途中也不需要任何操作。至于如何自定义其他软件和服务,请阅读后一节。

Alt text 扫描跳转过程,无需手动点选

迨 iOS 17 以后,任何 Shortcuts 动作均可安插于锁屏界面,届时此动作也更容易触及。事实上,我一直试着将锁屏界面打造成各种信息的捕捉器(Tools for Capture),向左滑动是相机界面,捕捉影像;扫描按钮,捕捉纸质文件;笔记按钮,捕捉一闪而过的念头……等 Shortcuts 也跻身其中,则能够快速捕捉的信息类型将大大拓展,扫描跳转,只是其中的小水花吧。

这种把指向真实世界的功能集合于一处的思路,十年前在 Google Nexus 手机上就很成熟了,Google 让镜头捕捉尽可能多的信息,照片、视频、文字、花卉、食品标签……当然,也有二维码。可一旦二维码成为交互的第一入口,第三方厂商就不太可能再让渡权利,或许只要二维码不死,用户就只能用各种奇技淫巧来回跳转。

原理简析

二维码所隐含的,大多是 URL 链接信息,而所谓的自动跳转,其实就是事先备好一份名单,遇到不同的 URL 就打开对应软件,有点像查通讯录。

Alt text Shortcuts 主要步骤图解

但如何将这一系列步骤翻译为 Shortcuts 语言,答案却并不明显,传统思路是套用大量的 If 条件判断模块,从而区分种种情形,然而,世上的二维码千千万万,随便添加几个服务,Shortcuts 动作就会瓜瓞绵绵,最终冗长到你自己都不认识它。4

所幸我们可以组合其他模块,显著简化 Shortcuts 步骤。在《给照片添加“徕卡风格水印”,兼谈 Shortcuts 中的字典》一文中,我介绍了词典(Dictionary)、循环(Repeat for each)和条件判断(If)模块的组合用法,它们可以实现常见编程语言中的 Case/Switch 功能,即针对不同情况,设置不同的后续操作,而不是不断嵌套 If。

不过,前文需要考虑的情景还不算多5,用循环也感受不到明显的延迟,但二维码却不同,很可能有几十上百个服务,好在也不需要真的一一列入词典,只需列开头部分即可,比如中国邮政就只需要 https://mini.ems.com.cn,随后的内容并不影响应当打开哪个目标软件,但所涉项目还是过多。于是我调整了逻辑,直接用正则匹配(Match)模块,组合词典键(key)为关键词,判断所扫二维码的开头是什么,从而避开了效率相对低的循环模块。

其中的技术细节是,假设你有 https://app1.com、https://app2.com 和 https://app3.com 三个 URL 模板,均要打开微信扫码,则以正则表达式 https://app1\.com|https://app1\.com|https://app1\.com,即可判断任何一个待测试 URL 是否应当跳到微信。其中 | 表示逻辑或,可包罗种种情形,进而简化动作,免去重复添加模块。

Alt text 聚合扫码 Shortcuts 动作的主要步骤

上图中的词典步骤存储了可能会扫到的 URL 开头部分,以及对应软件扫描界面的 URL Scheme,注意它们显然不是一一对应,而是一个扫码 URL Scheme 接管多种 URL,例如在我的生活中,微信就接管了骑车、寄快递和去附近的烘焙店攒会员积分等多个功能。你可以扫码(用 iPhone 自带摄像头即可)获取生活中常遇到的二维码,取其前半部分填入词典中为键(key),再以对应软件的 URL Scheme 为值(value),自行拓展本动作的数据库。

下面是一些常用软件的扫码 URL Scheme,可供参考:

微信扫一扫:weixin://scanqrcode 支付宝扫码:alipayqr://platformapi/startapp?saId=10000007 知乎扫一扫:zhihu://codereader 美团扫一扫:imeituan://www.meituan.com/scanQRCode

惟需注意,为兼顾正则表达式和词典各自的特殊语法,二维码 URL 中的英文句号 . 需要加上斜杠 \,以将其转义,免得正则模块或词典模块以为其有特殊含义。仍以中国邮政小程序的 URL 模板为例,应写成 https://mini\.ems\.com\.cn。6

此外,本动作默认会保存扫码记录,如有需要可保留此功能,而在使用前,建议先确定您所需的数据存储位置,默认是 iCloud 中的 Shortcuts 文件夹。这一设计要归功于文章开头所提软件的开发者。

Alt text 使用前请填写您需要保存扫码记录的位置小结

诚然,选一下用什么软件扫码,绝非难事,但恰恰是这些平时隐而不见的摩擦力,在人状态不佳时就会无限放大,比如撞上阵雨,或者加班到深夜,甚至刚刚结束一场饭局……这些时候,人的精神状态通常不会太好,交互上的瑕疵就会迅速撕裂。

状态对使用者的影响难以预料,曾闻有人“手撕 ATM 机”,这事儿大概设计师要负一些责任;鄙人当然无意更无力解决社会问题,但若能消除或避开一些不合理的设计,减少一些摩擦力,起码会让人更舒服一些。扫码一事,自然也落入我的视野,遂有此文。

即所含 URL Scheme 的内容,一般是根据开头判断所属软件。 ↩还有一个问题,该软件暂无回滚机制(截至20230804),例如扫描美团单车的二维码后,如果该软件发现手机上未安装美团软件,则会直接报错,但事实上,微信可以扫描美团二维码并启动对应小程序。这也是我自制 Shortcuts 动作的原因。 ↩除非微信处于关闭状态,那当然需要一两秒的启动时间——话说回来,在这种情况下,手动打开微信当然也要等待几秒。 ↩而且,使用大量的条件判断,动作运行效率也非常低,还容易崩溃。 ↩《给照片添加“徕卡风格水印”,兼谈 Shortcuts 中的字典》中,所要考虑的只是不同相机机型,然后套用不同的水印。绝大多数人拥有的相机只是个位数,故情形不会太多。 ↩就正则模块而言,. 表示任何符号;对词典而言,. 表示进一步读取子词典的内容。 ↩


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3